//package com.smart.community.feign.region.service;
//
//import java.util.List;
//
//import org.springframework.cloud.openfeign.FeignClient;
//import org.springframework.web.bind.annotation.DeleteMapping;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestParam;
//
//import com.smart.community.feign.region.dto.RegionDTO;
//import com.smart.community.feign.region.dto.RegionTreeDTO;
//import com.smart.community.feign.region.fallback.RegionFeignFallbackFactory;
//
///**
// * 区域服务Feign接口
// * 提供区域管理相关的远程调用接口
// * 
// * @author Wu.Liang
// * @since 2025-01-21
// */
//@FeignClient(name = "smart-community-region", 
//             path = "/region", 
//             fallbackFactory = RegionFeignFallbackFactory.class,
//             contextId = "regionFeignService")
//public interface RegionFeignService {
//    
//    /**
//     * 获取区域树形结构（支持按需加载）
//     * 初始只加载顶级区域，点击展开时再请求子区域
//     * 
//     * @param parentId 父区域ID，不传则获取顶级区域
//     * @return 区域树形结构列表
//     */
//    @GetMapping("/feign/region/tree")
//    List<RegionTreeDTO> getRegionTree(@RequestParam(value = "parentId", required = false) Long parentId);
//    
//    /**
//     * 获取区域完整树形结构（递归查询所有子区域）
//     * 仅用于特殊场景，如数据导出、统计分析等
//     * 
//     * @param parentId 父区域ID，不传则获取所有顶级区域
//     * @return 完整的区域树形结构列表
//     */
//    @GetMapping("/feign/region/tree/complete")
//    List<RegionTreeDTO> getCompleteRegionTree(@RequestParam(value = "parentId", required = false) Long parentId);
//    
//    /**
//     * 根据区域ID获取区域信息
//     * 
//     * @param regionId 区域ID
//     * @return 区域信息
//     */
//    @GetMapping("/feign/region/{regionId}")
//    RegionDTO getRegionById(@PathVariable("regionId") Long regionId);
//    
//    /**
//     * 根据区域编码获取区域信息
//     * 
//     * @param regionCode 区域编码
//     * @return 区域信息
//     */
//    @GetMapping("/feign/region/code/{regionCode}")
//    RegionDTO getRegionByCode(@PathVariable("regionCode") String regionCode);
//    
//    /**
//     * 根据区域类型获取区域列表
//     * 
//     * @param regionType 区域类型：1-省，2-市，3-区县，4-街道，5-社区
//     * @return 区域列表
//     */
//    @GetMapping("/feign/region/type/{regionType}")
//    List<RegionDTO> getRegionsByType(@PathVariable("regionType") Integer regionType);
//    
//    /**
//     * 获取子区域列表
//     * 
//     * @param regionId 区域ID
//     * @return 子区域列表
//     */
//    @GetMapping("/feign/region/{regionId}/children")
//    List<RegionDTO> getChildRegions(@PathVariable("regionId") Long regionId);
//    
//    /**
//     * 获取区域层级路径
//     * 获取从根区域到指定区域的层级路径
//     * 
//     * @param regionId 区域ID
//     * @return 区域层级路径列表
//     */
//    @GetMapping("/feign/region/{regionId}/path")
//    List<RegionDTO> getRegionPath(@PathVariable("regionId") Long regionId);
//    
//    /**
//     * 批量获取区域信息
//     * 
//     * @param regionIds 区域ID列表
//     * @return 区域信息列表
//     */
//    @PostMapping("/feign/region/batch")
//    List<RegionDTO> getRegionsByIds(@RequestBody List<Long> regionIds);
//    
//    /**
//     * 检查区域编码是否存在
//     * 
//     * @param regionCode 区域编码
//     * @param excludeRegionId 排除的区域ID
//     * @return 是否存在
//     */
//    @GetMapping("/feign/region/check/code")
//    Boolean checkRegionCodeExists(
//            @RequestParam("regionCode") String regionCode,
//            @RequestParam(value = "excludeRegionId", required = false) Long excludeRegionId);
//    
//    /**
//     * 根据区域名称模糊查询区域列表
//     * 
//     * @param regionName 区域名称
//     * @return 区域列表
//     */
//    @GetMapping("/region/search/name")
//    List<RegionDTO> searchRegionsByName(@RequestParam("regionName") String regionName);
//    
//    /**
//     * 获取区域统计信息
//     * 
//     * @param regionId 区域ID
//     * @return 区域统计信息
//     */
//    @GetMapping("/region/{regionId}/stats")
//    Object getRegionStats(@PathVariable("regionId") Long regionId);
//    
//    /**
//     * 获取所有区域统计信息
//     * 
//     * @return 所有区域统计信息
//     */
//    @GetMapping("/region/statistics")
//    Object getAllRegionStatistics();
//    
//    /**
//     * 清除区域缓存
//     * 
//     * @param regionId 区域ID
//     * @return 清除结果
//     */
//    @DeleteMapping("/region/cache/{regionId}")
//    Boolean clearRegionCache(@PathVariable("regionId") Long regionId);
//    
//    /**
//     * 清除所有区域缓存
//     * 
//     * @return 清除结果
//     */
//    @DeleteMapping("/region/cache/all")
//    Boolean clearAllRegionCache();
//    
//    /**
//     * 刷新区域统计数据
//     * 
//     * @param regionId 区域ID
//     * @return 刷新结果
//     */
//    @PostMapping("/region/{regionId}/refresh-stats")
//    Boolean refreshRegionStats(@PathVariable("regionId") Long regionId);
//
//    /**
//     * 获取指定区域及其所有子区域ID（递归到末梢，包含自身）
//     * 用于数据区域范围查询
//     *
//     * @param regionId 区域ID
//     * @return 区域ID列表
//     */
//    @GetMapping("/region/{regionId}/descendant-ids")
//    List<Long> getRegionAndDescendantIds(@PathVariable("regionId") Long regionId);
//
//} 